<?php

namespace LowCode\Traits\Props;

/**
 * 设置组件双向绑定数据源
 */
trait HasModel
{
    /**
     * 设置组件 v-model:modelName 双向绑定数据源
     * @param string $value
     * @param string|null $id
     * @param array $options
     * @return $this
     */
    public function modelValue(string $value, string $id = null, array $options = []): static
    {
        return $this->vModel($value, $id, $options);
    }


    /**
     * @param string $modelName
     * @param mixed $event
     * @param string|null $id
     * @param array $modifiers
     * @return $this
     */
    public function onUpdateModel(string $modelName, string $event, string $id = null, array $modifiers = []): static
    {
        return $this->event("update:".$modelName, jsFn($event,$id),$modifiers);
    }

    /**
     * @param string $event
     * @param string|null $id
     * @param array $modifiers
     * @return $this
     */
    public function onUpdateModelValue(string $event, string $id = null, array $modifiers = []): static
    {
        return $this->onUpdateModel("modelValue", $event, $id, $modifiers);
    }
}
